home *** CD-ROM | disk | FTP | other *** search
- ; -*- Mode: Lisp; Syntax: Common-Lisp; Package: SCHEME-TRANSLATOR; -*-
-
- ; This file was generated by Pseudoscheme 2.8a
- ; running in Lucid Common Lisp 4.0.1
- ; from file /amd/night/b/jar/pseudo/rules.scm
-
- (SCHI:BEGIN-TRANSLATED-FILE)
- (DEFUN REWRITE-SYNTAX-RULES
- (.EXP R C)
- (PROCESS-RULES (CDDR .EXP) (CADR .EXP) R C))
- (SCHI:SET-VALUE-FROM-FUNCTION 'REWRITE-SYNTAX-RULES
- 'SCHEME::REWRITE-SYNTAX-RULES)
- (DEFUN PROCESS-RULES
- (RULES SUBKEYWORDS R C)
- (LET ((TAIL (FUNCALL R 'SCHEME::TAIL)))
- (CONS (FUNCALL R 'SCHEME::LAMBDA)
- (CONS '(SCHEME::%INPUT% SCHEME::%RENAME%
- SCHEME::%COMPARE%)
- (LIST
- (CONS (FUNCALL R 'SCHEME::LET)
- (CONS
- (LIST
- (CONS TAIL
- (LIST
- (CONS (FUNCALL R
- 'SCHEME::CDR)
- '(SCHEME::%INPUT%)))))
- (LIST
- (CONS (FUNCALL R 'SCHEME::COND)
- (APPEND
- (MAPCAR
- #'(LAMBDA (RULE)
- (PROCESS-RULE RULE TAIL
- SUBKEYWORDS R C))
- RULES)
- (LIST
- (CONS (FUNCALL R
- 'SCHEME::ELSE)
- '((SCHEME::SYNTAX-ERROR
- "use of macro doesn't match definition"
- SCHEME::%INPUT%))))))))))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-RULES
- 'SCHEME::PROCESS-RULES)
- (DEFUN PROCESS-RULE
- (RULE TAIL SUBKEYWORDS R C)
- (DECLARE (SPECIAL NULL-RANK))
- (IF (NOT (= (LENGTH RULE) 2))
- (SYNTAX-ERROR "ill-formed rule" RULE))
- (LET ((PATTERN (CAR RULE))
- (TEMPLATE (CADR RULE)))
- (LET ((ENV
- (PROCESS-PATTERN (CDR PATTERN)
- TAIL
- NULL-RANK
- SUBKEYWORDS)))
- (CONS (PROCESS-MATCH TAIL (CDR PATTERN) SUBKEYWORDS)
- (LIST
- (CONS (FUNCALL R 'SCHEME::LET*)
- (CONS
- (MAPCAR
- #'(LAMBDA (Z) (CONS (CAR Z) (LIST (CADR Z))))
- ENV)
- (LIST (PROCESS-TEMPLATE TEMPLATE ENV NULL-RANK)))))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-RULE
- 'SCHEME::PROCESS-RULE)
- (LOCALLY (DECLARE (SPECIAL NULL-RANK))
- (SETQ NULL-RANK 'NIL))
- (SCHI:SET-FUNCTION-FROM-VALUE 'NULL-RANK
- 'SCHEME::NULL-RANK)
- (DEFUN PROCESS-MATCH
- (INPUT PATTERN SUBKEYWORDS)
- (IF (SCHI:TRUEP (NAME? PATTERN))
- (IF (MEMBER PATTERN
- SUBKEYWORDS
- :TEST
- #'SCHI:SCHEME-EQUAL-P)
- (CONS 'SCHEME::%COMPARE%
- (CONS INPUT
- (LIST (CONS 'SCHEME::QUOTE
- (LIST PATTERN)))))
- 'T)
- (IF (SCHI:TRUEP (ZERO-OR-MORE? PATTERN))
- (PROCESS-LIST-MATCH INPUT
- (CAR PATTERN)
- SUBKEYWORDS)
- (IF (SCHI:TRUEP (AT-LEAST-ONE? PATTERN))
- (CONS 'SCHEME::AND
- (CONS
- (CONS 'SCHEME::NOT
- (LIST (CONS 'SCHEME::NULL?
- (LIST INPUT))))
- (LIST
- (PROCESS-LIST-MATCH INPUT
- (CAR PATTERN)
- SUBKEYWORDS))))
- (IF (CONSP PATTERN)
- (CONS 'SCHEME::LET
- (CONS
- (LIST (CONS 'SCHEME::%TEMP%
- (LIST INPUT)))
- (LIST
- (CONS 'SCHEME::AND
- (CONS '(SCHEME::PAIR? SCHEME::%TEMP%)
- (CONS
- (PROCESS-MATCH
- '(SCHEME::CAR SCHEME::%TEMP%)
- (CAR PATTERN)
- SUBKEYWORDS)
- (LIST
- (PROCESS-MATCH
- '(SCHEME::CDR SCHEME::%TEMP%)
- (CDR PATTERN)
- SUBKEYWORDS))))))))
- (CONS 'SCHEME::EQUAL?
- (CONS INPUT
- (LIST
- (CONS 'SCHEME::QUOTE
- (LIST PATTERN))))))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-MATCH
- 'SCHEME::PROCESS-MATCH)
- (DEFUN PROCESS-LIST-MATCH
- (INPUT PATTERN SUBKEYWORDS)
- (CONS 'SCHEME::LET
- (CONS 'SCHEME::LOOP
- (CONS (LIST (CONS 'SCHEME::L
- (LIST INPUT)))
- (LIST
- (CONS 'SCHEME::OR
- (CONS '(SCHEME::NULL? SCHEME::L)
- (LIST
- (CONS 'SCHEME::AND
- (CONS
- '(SCHEME::PAIR? SCHEME::L)
- (CONS
- (PROCESS-MATCH
- '(SCHEME::CAR SCHEME::L)
- PATTERN
- SUBKEYWORDS)
- '((SCHEME::LOOP
- (SCHEME::CDR SCHEME::L))))))))))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-LIST-MATCH
- 'SCHEME::PROCESS-LIST-MATCH)
- (DEFUN PROCESS-PATTERN
- (PATTERN PATH RANK SUBKEYWORDS)
- (IF (SCHI:TRUEP (NAME? PATTERN))
- (IF (SCHI:TRUEP (NAME-MEMBER PATTERN SUBKEYWORDS))
- 'NIL
- (LIST (LIST PATTERN PATH RANK)))
- (IF (OR (SCHI:TRUEP (ZERO-OR-MORE? PATTERN))
- (SCHI:TRUEP (AT-LEAST-ONE? PATTERN)))
- (LET ((TEMP 'SCHEME::%TEMP%))
- (CONS (CONS TEMP (LIST PATH))
- (MAPCAR
- #'(LAMBDA (Z)
- (CONS (CAR Z)
- (CONS
- (CONS 'SCHEME::MAP
- (CONS
- (CONS 'SCHEME::LAMBDA
- (CONS '(SCHEME::%INPUT%) (LIST (CADR Z))))
- (LIST TEMP)))
- (LIST (CADDR Z)))))
- (PROCESS-PATTERN (CAR PATTERN)
- 'SCHEME::%INPUT%
- (CONS (CADR PATTERN)
- RANK)
- SUBKEYWORDS))))
- (IF (CONSP PATTERN)
- (APPEND
- (PROCESS-PATTERN (CAR PATTERN)
- (CONS 'SCHEME::CAR
- (LIST PATH))
- RANK
- SUBKEYWORDS)
- (PROCESS-PATTERN (CDR PATTERN)
- (CONS 'SCHEME::CDR
- (LIST PATH))
- RANK
- SUBKEYWORDS))
- 'NIL))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-PATTERN
- 'SCHEME::PROCESS-PATTERN)
- (DEFUN PROCESS-TEMPLATE
- (TEMPLATE ENV RANK)
- (IF (SCHI:TRUEP (NAME? TEMPLATE))
- (LET ((PROBE (NAME-ASSOC TEMPLATE ENV)))
- (IF (SCHI:TRUEP PROBE)
- (IF (SCHI:SCHEME-EQUAL-P (CADDR PROBE) RANK)
- TEMPLATE
- (SYNTAX-ERROR "syntax-rules: template rank error"
- TEMPLATE))
- (CONS 'SCHEME::%RENAME%
- (LIST (CONS 'SCHEME::QUOTE
- (LIST TEMPLATE))))))
- (IF (OR (SCHI:TRUEP (ZERO-OR-MORE? TEMPLATE))
- (SCHI:TRUEP (AT-LEAST-ONE? TEMPLATE)))
- (LET ((VARS (FREE-TEMPLATE-VARS (CAR TEMPLATE)
- ENV
- 'NIL)))
- (IF (NULL VARS)
- (SYNTAX-ERROR "ill-formed template"
- TEMPLATE)
- (CONS 'SCHEME::MAP
- (CONS
- (CONS 'SCHEME::LAMBDA
- (CONS VARS
- (LIST
- (PROCESS-TEMPLATE (CAR TEMPLATE)
- ENV
- (CONS
- (CADR TEMPLATE)
- RANK)))))
- VARS))))
- (IF (CONSP TEMPLATE)
- (CONS 'SCHEME::CONS
- (CONS (PROCESS-TEMPLATE (CAR TEMPLATE)
- ENV
- RANK)
- (LIST
- (PROCESS-TEMPLATE (CDR TEMPLATE)
- ENV
- RANK))))
- (CONS 'SCHEME::QUOTE
- (LIST TEMPLATE))))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'PROCESS-TEMPLATE
- 'SCHEME::PROCESS-TEMPLATE)
- (DEFUN FREE-TEMPLATE-VARS
- (TEMPLATE ENV FREE)
- (IF (SCHI:TRUEP (NAME? TEMPLATE))
- (IF (AND (SCHI:TRUEP (NAME-ASSOC TEMPLATE ENV))
- (NOT (SCHI:TRUEP (NAME-MEMBER TEMPLATE FREE))))
- (CONS TEMPLATE FREE)
- FREE)
- (IF (OR (SCHI:TRUEP (ZERO-OR-MORE? TEMPLATE))
- (SCHI:TRUEP (AT-LEAST-ONE? TEMPLATE)))
- (FREE-TEMPLATE-VARS (CADR TEMPLATE) ENV FREE)
- (IF (CONSP TEMPLATE)
- (FREE-TEMPLATE-VARS (CAR TEMPLATE)
- ENV
- (FREE-TEMPLATE-VARS (CDR TEMPLATE)
- ENV
- FREE))
- FREE))))
- (SCHI:SET-VALUE-FROM-FUNCTION 'FREE-TEMPLATE-VARS
- 'SCHEME::FREE-TEMPLATE-VARS)
- (DEFUN CHECK-CADR
- (SYMS)
- #'(LAMBDA (PATTERN)
- (IF (CONSP PATTERN)
- (IF (CONSP (CDR PATTERN))
- (IF (MEMBER (CADR PATTERN) SYMS :TEST #'EQ)
- (OR (NULL (CDDR PATTERN))
- (SYNTAX-ERROR "segment matching not implemented" PATTERN))
- SCHI:FALSE)
- SCHI:FALSE)
- SCHI:FALSE)))
- (SCHI:SET-VALUE-FROM-FUNCTION 'CHECK-CADR
- 'SCHEME::CHECK-CADR)
- (DEFUN AT-LEAST-ONE? (X) SCHI:FALSE)
- (SCHI:SET-VALUE-FROM-FUNCTION 'AT-LEAST-ONE?
- 'SCHEME::AT-LEAST-ONE?)
- (LOCALLY (DECLARE (SPECIAL ZERO-OR-MORE?))
- (SETQ ZERO-OR-MORE? (CHECK-CADR
- (LIST
- (VALUES (INTERN "..."
- SCHI:SCHEME-PACKAGE))
- 'SCHEME::---))))
- (SCHI:SET-FUNCTION-FROM-VALUE 'ZERO-OR-MORE?
- 'SCHEME::ZERO-OR-MORE?)
-